<?php
/**
 * 解释器管理类
 * 2020年1月8日16:06:56
 */
namespace Application\Common\Interpreter;

class InterpreterManager
{
    // 待解释对象
    public $this_string = null;
    // 解释器树
    protected $interpreters = array();
    // 增加解释器
    public function add($interpreter = null)
    {
        if(empty($interpreter)){
            return false;
        }
        $this -> interpreters[] = $interpreter;
    }
    // 移除解释器
    public function remove($interpreter = null)
    {
        if(empty($interpreter)){
            return false;
        }
        // 循环
        foreach($this -> interpreters as $k => $v){
            if($interpreter === $v){
                unset($this -> interpreter[$k]);
                break;
            }
        }
    }
    // 执行操作
    public function handle($string = null)
    {
        if(!empty($string)){
            $this -> this_string = $string;
        }
        foreach($this -> interpreters as $v ){
            $this -> this_string = $v -> handle($this -> this_string);
        }
        return $this -> this_string;
    }
}
